const ARRAY_STYLE = {
  EndColor: 1,
  FillColor: 15,
  FillMode: 0,
  OutPenWidth: 1,
  OverMethod: 0,
  PatAngle: 1,
  PatColor: 1,
  PatHeight: 1,
  PatID: 27,
  PatWidth: 1,
}

export class Area {
  // 对圆无效

  static addArea({ position, attr, service, docLayer }) {
    /* 1. 构建要素 */
    var pointObj = new Array()
    position.forEach((item) => {
      pointObj.push(new Zondy.Object.Point2D(item[0], item[1]))
    })
    //设置区要素的几何信息
    var gArc = new Zondy.Object.Arc(pointObj)
    //构成区要素折线
    var gAnyLine = new Zondy.Object.AnyLine([gArc])
    //构成区要素
    var gRegion = new Zondy.Object.GRegion([gAnyLine])
    //构成区要素的几何信息
    var fGeom = new Zondy.Object.FeatureGeometry({ RegGeom: [gRegion] })
    /* 1-2 样式信息 */
    var cRegionInfo = new Zondy.Object.CRegionInfo(ARRAY_STYLE)
    //要素图形参数信息
    var graphicInfo = new Zondy.Object.WebGraphicsInfo({
      InfoType: 3,
      RegInfo: cRegionInfo,
    })
    /* 属性 */
    var attValue = attr.map((item) => item.value)
    /* 2. 要素集的构建 */
    var newFeature = new Zondy.Object.Feature({
      AttValue: attValue,
      fGeom: fGeom,
      GraphicInfo: graphicInfo,
    })
    newFeature.setFType(3)

    //创建一个要素数据集
    var featureSet = new Zondy.Object.FeatureSet()
    var fldNumber = attr.length
    var fldType = attr.map((item) => item.type)
    var fldName = attr.map((item) => item.key)
    var cAttValue = new Zondy.Object.CAttStruct({
      FldNumber: fldNumber,
      FldType: fldType,
      FldName: fldName,
    })
    featureSet.AttStruct = cAttValue
    featureSet.addFeature(newFeature)
    /* 3. 调用中地服务，添加要素集 */
    var editDocFeature = new Zondy.Service.EditDocFeature(
      service.docName,
      service.layerId,
      {
        ip: 'localhost',
        port: '6163', //访问IGServer的端口号，.net版为6163，Java版为8089
      }
    )
    editDocFeature.add(featureSet, this.onPloySuccess(docLayer))

    //添加区要素回调函数
  }
  static onPloySuccess(docLayer) {
    return function (data) {
      if (data.succeed) {
        alert('添加区要素成功！')
        docLayer.refresh()
      } else {
        alert('添加区要素失败！')
      }
    }
  }
}
